home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 2 / DOS036.dsk / BIORHYTHM.bas < prev    next >
BASIC Source File  |  2012-02-16  |  11KB  |  251 lines

  1. 1  DATA  15,12,1978
  2. 2  CLEAR : DIM COL$(75): HOME 
  3. 4 PI = 6.28318530718
  4. 5  HOME : GOTO 200
  5. 6  REM   8.3 C/I 
  6. 10  PRINT "<CTRL-\>": RETURN 
  7. 15  REM  10 C/I
  8. 20  PRINT "<CTRL-]>": RETURN 
  9. 25  REM  12 C/I
  10. 30  PRINT "<CTRL-^>": RETURN 
  11. 35  REM  16.5 C/I
  12. 40  PRINT "<CTRL-_>": RETURN 
  13. 45  REM  ENHANCED
  14. 50  PRINT "<CTRL-A>": RETURN 
  15. 55  REM   NORMAL  
  16. 60  PRINT "<CTRL-B>": RETURN 
  17. 65  REM  START PRINT
  18. 70  POKE 54,0: POKE 55,193: RETURN 
  19. 75  REM  TURN ON 80 LINES
  20. 80  PRINT "<CTRL-I>80N": RETURN 
  21. 85  REM  TURN ON SCREEN AND PRINTER
  22. 90  PRINT "<CTRL-I>I": RETURN 
  23. 91  PRINT "<CTRL-]>"
  24. 95  REM  TURN OFF PRINTER 
  25. 99  POKE 54,240: POKE 55,253: RETURN 
  26. 100  REM  BIO SUB. GO HERE 100-200
  27. 110 FA = 365 *YE +DA +31 *(MO -1) + INT((YE -1)/4) - INT((3/4) * INT(((YE -1)/100) +1)): RETURN 
  28. 120 FA = 365 *(YE) +DA +31 *(MO -1) - INT(.4 *MO +2.3) + INT(YE/4) - INT(3/4 *( INT(YE/100) +1)): RETURN 
  29. 130  IF FB = 0  THEN DAY$ = "SATURDAY"
  30. 131  IF FB = 1  THEN DAY$ = "SUNDAY"
  31. 132  IF FB = 2  THEN DAY$ = "MONDAY"
  32. 133  IF FB = 3  THEN DAY$ = "TUESDAY"
  33. 134  IF FB = 4  THEN DAY$ = "WEDNESDAY"
  34. 135  IF FB = 5  THEN DAY$ = "THURSDAY"
  35. 136  IF FB = 6  THEN DAY$ = "FRIDAY"
  36. 137  RETURN 
  37. 140  VTAB 1: PRINT  TAB( 2);: INVERSE : PRINT " BIORHYTHM PROGRAM BY ROGER KEATING": NORMAL : RETURN 
  38. 145  HTAB 5: PRINT "HIT 9 (RETURN) FOR INFORMATION": RETURN 
  39. 150  VTAB 8: PRINT " NAME ";: NORMAL : PRINT "    ";NAME$;"    ": RETURN 
  40. 160  VTAB 12: PRINT " DATE ";: NORMAL : PRINT "    ";DT$;"   ": RETURN 
  41. 170  VTAB 14: PRINT " MONTH ";: NORMAL : PRINT "   ";MO$;"  ": RETURN 
  42. 180  VTAB 16: PRINT " YEAR ";: NORMAL : PRINT "    ";YE$;"    ": RETURN 
  43. 181  GOSUB 50: PRINT " BIORHYTHM PROGRAM BY ROGER KEATING": PRINT : PRINT : PRINT " NAME ";NAME$: PRINT : PRINT " DATE OF BIRTH   ";DT$;" , ";MO$;" , ";YE$: PRINT "DATE OF FORECAST ";: GOSUB 20000: PRINT A;" , ";B;" , "C: PRINT 
  44. 182  PRINT "YOU HAVE LIVED ";NUM;" DAYS ": PRINT "AND WERE BORN ON A ";DAY$: PRINT : RETURN 
  45. 185  PRINT " DATE   -  -  -  -  -  -  -  -  -  -  -  0  +  +  +  +  +  +  +  +  +  +  +": RETURN 
  46. 190  PRINT "      **********************************************************************": RETURN 
  47. 200  HOME : GOSUB 140
  48. 201  GOSUB 145
  49. 210  INVERSE : GOSUB 150: INVERSE : GOSUB 160: INVERSE : GOSUB 170: INVERSE : GOSUB 180
  50. 220  FLASH : GOSUB 150: VTAB 8: POKE 36,10: INPUT NA$: INVERSE : GOSUB 150
  51. 221  IF NA$ = "0"  THEN 32000
  52. 222 X =  VAL(NA$): IF X = 0  THEN 230
  53. 223  IF X <1  OR X >9  THEN 220
  54. 224  ON X GOTO 1000,2000,3000,4000,5000,6000,7000,8000,9000
  55. 230  FLASH : GOSUB 160: VTAB 12: POKE 36,10: INPUT DT$: INVERSE : GOSUB 160
  56. 235 DA =  VAL(DT$): IF DA <1  OR DA >31  THEN 230
  57. 240  FLASH : GOSUB 170: VTAB 14: POKE 36,10: INPUT MO$: INVERSE : GOSUB 170
  58. 245 MO =  VAL(MO$): IF MO <1  OR MO >12  THEN 240
  59. 250  FLASH : GOSUB 180: VTAB 16: POKE 36,10: INPUT YE$: INVERSE : GOSUB 180
  60. 252  IF  LEN(YE$) <2  THEN YE$ = "0" +YE$
  61. 253  IF  LEN(YE$) <3  THEN YE$ = "19" +YE$: INVERSE : GOSUB 180
  62. 255 YE =  VAL(YE$): IF YE <100  THEN YE = YE +1900
  63. 256 DX = DA:MX = MO:YX = YE
  64. 258 DS = 62:CF = 0
  65. 310  IF MO >2  THEN 330
  66. 320  GOSUB 110: GOTO 350
  67. 330  GOSUB 120
  68. 350 FB = FA -( INT(FA/7) *7)
  69. 351 FX = FA
  70. 355  GOSUB 130
  71. 357  IF FC = 1  THEN DA = FD:MO = FM:YE = FY
  72. 360  GOSUB 12000
  73. 361 NUM = FA -FX
  74. 370  PRINT : PRINT "YOU HAVE LIVED FOR ";NUM;" DAYS": PRINT "AND WERE BORN ON A ";DAY$
  75. 500  REM * PRINTOUT GOES HERE
  76. 501  GOSUB 13000: GOSUB 14000
  77. 503  GOSUB 70: GOSUB 80: GOSUB 20: GOSUB 60: PRINT : PRINT : PRINT : PRINT : PRINT : GOSUB 181: GOSUB 60: GOSUB 185: GOSUB 190
  78. 509  REM  JUMP
  79. 510  FOR I = 3 TO 75:COL$(I) = " ": NEXT I
  80. 520 AP% = (( SIN(PI *(NU/23)) +1) *34) +7
  81. 530 AM% = (( SIN(PI *(NU/28)) +1) *34) +7
  82. 540 AI% = (( SIN(PI *(NU/33)) +1) *34) +7
  83. 550 COL$(41) = "*"
  84. 560 COL$(AP%) = "P":COL$(AM%) = "E":COL$(AI%) = "I"
  85. 570  GOSUB 15000
  86. 580 Y% = X/10:Z% = X -Y% *10
  87. 581  IF Y% = 0  THEN COL$(4) = " "
  88. 582  IF Y% = 1  THEN COL$(4) = "1"
  89. 583  IF Y% = 2  THEN COL$(4) = "2"
  90. 584  IF Y% = 3  THEN COL$(4) = "3"
  91. 585  IF Z% = 0  THEN COL$(5) = "0"
  92. 586  IF Z% = 1  THEN COL$(5) = "1"
  93. 587  IF Z% = 2  THEN COL$(5) = "2"
  94. 588  IF Z% = 3  THEN COL$(5) = "3"
  95. 589  IF Z% = 4  THEN COL$(5) = "4"
  96. 590  IF Z% = 5  THEN COL$(5) = "5"
  97. 591  IF Z% = 6  THEN COL$(5) = "6"
  98. 592  IF Z% = 7  THEN COL$(5) = "7"
  99. 593  IF Z% = 8  THEN COL$(5) = "8"
  100. 594  IF Z% = 9  THEN COL$(5) = "9"
  101. 600  FOR I = 0 TO 75: PRINT COL$(I);: NEXT : PRINT 
  102. 610 X = X +1
  103. 620  IF X = DA  AND DS <5  OR DS <0  THEN 640
  104. 625 NU = NU +1
  105. 626 DS = DS -1
  106. 630  GOTO 509
  107. 635  SPEED= 100
  108. 640  PRINT : PRINT : PRINT : PRINT "'I'   INTELLECTUAL CYCLE.": PRINT "'P'   PHYSICAL CYCLE.": PRINT "'E'   EMOTIONAL CYCLE.": PRINT : PRINT 
  109. 650  PRINT "     WHEN THE CYCLE IS IN THE NEGATIVE (-) YOU ARE IN THE 'LOW' PART OF THE": PRINT "CYCLE AND WHEN IN THE POSITIVE (+) YOU ARE IN THE 'HIGH' PART OF THE CYCLE."
  110. 660  PRINT "WHEN THE BIORHYTHM CROSSES THE CENTRE LINE (*) IT IS CALLED A 'CRITICAL'": PRINT "PERIOD. "
  111. 670  PRINT "     BIORHYTHMS ARE SIMPLY MATHEMATICAL FORMULAE AND AS SUCH CAN HAVE MANY AND ": PRINT "VARIED INTERPRETATIONS. WE WILL LEAVE THESE INTERPRETATIONS TO YOU."
  112. 680  PRINT : PRINT "                                                           R.J.KEATING."
  113. 690  PRINT : PRINT : PRINT : PRINT : PRINT : PRINT 
  114. 695  SPEED= 255
  115. 700  REM  TURN OFF AND RETURN
  116. 710  GOSUB 90: GOSUB 99
  117. 720  GOTO 2
  118. 1000  CLEAR : GR 
  119. 1001 X =  RND(16)
  120. 1005  COLOR= X
  121. 1010  FOR I = 0 TO 39: VLIN 40 * RND(10),39 AT I: NEXT 
  122. 1020  COLOR= 0
  123. 1030  FOR I = 0 TO 39: VLIN 0, RND(40) *40 AT I: NEXT 
  124. 1040 X = X +1
  125. 1045  IF  PEEK( -16384) >127  THEN 1090
  126. 1050  GOTO 1005
  127. 1090  POKE  -16368,0: TEXT : HOME : GOTO 2
  128. 2000  CLEAR : GR 
  129. 2010  PRINT : PRINT : PRINT : PRINT :J = 0
  130. 2015  COLOR= 15: FOR I = 1 TO 250: PLOT  RND(10) *39, RND(10) *30 +10: NEXT I
  131. 2020 A1 =  RND(10) *30 +6:B1 = 3:A = A1:B = B1
  132. 2025 T =  INT( RND(10) *2)
  133. 2026  IF T = 0  THEN T = 60
  134. 2027 J = J +1
  135. 2030  COLOR= 0: PLOT A,B
  136. 2035 T =  INT( RND(10) *2)
  137. 2040  IF  SCRN( A,B +1) < >0  THEN  ON T GOTO 2050,2043
  138. 2043 B = B +1: GOTO 2080
  139. 2045 X =  RND(10) *2: IF X = 1  THEN 2050
  140. 2046  GOTO 2060
  141. 2050  IF  SCRN( A +1,B) < >0  THEN 2060
  142. 2051 A = A +1: GOTO 2080
  143. 2060  IF  SCRN( A -1,B) < >0  THEN 2080
  144. 2061 A = A -1:T = 2060: GOTO 2080
  145. 2080  IF  SCRN( A1,B1 +1) < >0  AND  SCRN( A1 +1,B1) < >0  THEN 2200
  146. 2082  IF  SCRN( A1,B1 +1) < >0  AND  SCRN( A1 -1,B1) < >0  THEN 2200
  147. 2085  GOTO 2100
  148. 2100  IF A <1  OR A >38  OR B <1  OR B >38  THEN 2200
  149. 2110  COLOR= 9:A1 = A:B1 = B: PLOT A,B: HTAB 1: PRINT "DRIP NUMBER ";J;: GOTO 2030
  150. 2200  COLOR= 9: PLOT A1,B1: IF  PEEK( -16384) >127  THEN 10000
  151. 2300  GOTO 2020
  152. 3000  CLEAR : GR : FOR W = 3 TO 50: FOR I = 1 TO 19: FOR J = 0 TO 19:K = I +J: COLOR= J *3/(I +3) +I *W/12
  153. 3060  PLOT I,K: PLOT K,I: PLOT 40 -I,40 -K: PLOT 40 -K,40 -I: PLOT K,40 -I: PLOT 40 -I,K: PLOT I,40 -K: PLOT 40 -K,I
  154. 3065  IF  PEEK( -16384) >127  THEN W = 50:I = 19:J = 19
  155. 3070  NEXT : NEXT : NEXT 
  156. 3075  IF  PEEK( -16384) >127  THEN 10000
  157. 3080  GOTO 3010
  158. 4000  CLEAR : GR 
  159. 4005  FOR I = 1 TO 4:C%(I) =  RND(2) *15: NEXT 
  160. 4010  FOR I = 3 TO 1  STEP  -1:C%(I +1) = C%(I): NEXT :C%(I) =  RND(2) *16: FOR I = 1 TO 5: FOR J = 1 TO 4: COLOR= C%(J):L = J *5 +14 +I:K = 39 -L: HLIN K,L AT K: VLIN K,L AT L: HLIN K,L AT L: VLIN K,L AT K: NEXT : NEXT 
  161. 4030  IF  PEEK( -16384) <128  THEN 4005
  162. 4040  GOTO 10000
  163. 5000  CLEAR : GR 
  164. 5005  FOR I = 0 TO 39
  165. 5010  COLOR=  INT( RND(10) *16): HLIN 0,39 AT I: HLIN 0,39 AT 39 -I: VLIN 0,39 AT I: VLIN 0,39 AT 39 -I: NEXT I
  166. 5020  IF  PEEK( -16384) >127  THEN 10000
  167. 5030  GOTO 5005
  168. 6000  CLEAR : GR 
  169. 6010  COLOR=  INT( RND(10) *16): FOR I = 0 TO 18  STEP 2:J = 39 -I: HLIN I,J AT I:K = I +7
  170. 6015  GOSUB 6020: GOTO 6030
  171. 6020  PRINT "<CTRL-G>": RETURN 
  172. 6030  VLIN I,J AT J: GOSUB 6020
  173. 6040  HLIN I +2,J AT J: GOSUB 6020: VLIN I +2,J AT I +2: GOSUB 6020: NEXT I
  174. 6050  COLOR=  INT( RND(10) *16): FOR I = 18 TO 0  STEP  -2:J = 39 -I: VLIN I +2,J AT I +2: GOSUB 6020: HLIN I +2,J AT J: GOSUB 6020
  175. 6060  VLIN I,J AT J: GOSUB 6020: HLIN I,J AT I: GOSUB 6020: NEXT I: IF  PEEK( -16384) >127  THEN 10000
  176. 6070  GOTO 6010
  177. 7000  CLEAR : TEXT : HOME 
  178. 7010  GR : POKE  -16302,0: FOR I = 39 TO 47: COLOR= 0: HLIN 0,39 AT I: NEXT I
  179. 7015 X =  INT( RND(1) *15 +1)
  180. 7020 A =  RND(1) *9 +10:B =  RND(1) *13 +10
  181. 7030  FOR XX =  -A TO A:YY =  SQR(B ^2 *(1 -XX ^2/A ^2)): COLOR= X: VLIN 23 -YY,23 +YY AT XX +19: IF  PEEK( -16384) >127  THEN XX = A
  182. 7034  NEXT : IF  PEEK( -16384) >127  THEN 10000
  183. 7107  GOTO 7015
  184. 8000  CLEAR : TEXT : HOME 
  185. 8010  GR : POKE  -16302,0: FOR I = 39 TO 47: COLOR= 0: HLIN 0,39 AT I: NEXT I
  186. 8015 K =  INT( RND(1) *15 +1):A =  RND(1) ^2:A = A *5: COLOR= K
  187. 8020  FOR X = 0 TO 39:XX = (X -18)/3:Y = A *XX ^2: IF Y >47  THEN Y = 47
  188. 8030  VLIN 47 -Y,47 AT X: IF  PEEK( -16384) >127  THEN X = 39
  189. 8040  NEXT X: IF  PEEK( -16384) >127  THEN 10000
  190. 8080  GOTO 8015
  191. 9000  REM  FORECAST DATE
  192. 9010  HOME : PRINT "DO YOU WISH TO CHANGE THE FORECAST": PRINT : PRINT "DATE PERMANENTLY (TYPE P) OR MAKE": PRINT : PRINT "A SINGLE FORECAST (TYPE S)."
  193. 9015  PRINT : PRINT "OR INFORMATION (TYPE F)."
  194. 9020  PRINT : GET X$: IF X$ = "S"  THEN 9100
  195. 9025  IF X$ = "F"  THEN 9400
  196. 9030  HOME : PRINT "TO CHANGE THE DATE PERMANENTLY TYPE": PRINT : PRINT "1 DATA DAY , MONTH , YEAR ": PRINT : PRINT "AT THE MOMENT THE FORECAST DATE IS": PRINT 
  197. 9035  PRINT : PRINT : PRINT 
  198. 9040  RESTORE : READ A,B,C: PRINT " 1  DATA ";A;" , ";B;" , ";C: PRINT 
  199. 9050  VTAB 23: INVERSE : PRINT " TYPE ";: NORMAL : PRINT " RUN ";: INVERSE : PRINT " WHEN FINISHED. "
  200. 9060  VTAB 15: NORMAL : END 
  201. 9100  HOME : PRINT "FOR A SINGLE FORECAST YOU MUST TYPE": PRINT 
  202. 9110  PRINT "IN THE DAY , MONTH AND YEAR": PRINT 
  203. 9120  PRINT "FOR EXAMPLE  ( 21 , 8 , 1978 ).": PRINT : PRINT : PRINT 
  204. 9130  INPUT FD,FM,FY
  205. 9140 FC = 1
  206. 9150  GOTO 200
  207. 9400  HOME : PRINT "WHEN THE NAME IS ASKED YOU GET DISPLAYS"
  208. 9410  PRINT "BY HITTING NUMBERS BETWEEN 1 AND 8"
  209. 9420  PRINT "9 ALLOWS YOU TO CHANGE THE FORSCAST"
  210. 9430  PRINT "DATE EITHER FOR ONE RUN OR FOR A NUMBER"
  211. 9440  PRINT "OF RUNS."
  212. 9441  PRINT "0 RETURNS YOU TO THE MENU."
  213. 9450  PRINT : PRINT "THE PROGRAM WILL PROCEED WHEN YOU HIT": PRINT "A KEY."
  214. 9460  PRINT : PRINT : GET XX$: GOTO 10000
  215. 10000  POKE  -16368,0: TEXT : HOME : GOTO 2
  216. 11000  DATA  J,A,N,F,E,B,M,A,R,A,P,R,M,A,Y,J,U,N,J,U,L,A,U,G,S,E,P,O,C,T,N,O,V,D,E,C
  217. 11010  DATA   32,29,32,31,32,31,32            ,32,31,32,31,32
  218. 12000  RESTORE 
  219. 12010  IF FC = 1  THEN  READ A,B,C: GOTO 12030
  220. 12020  READ DA,MO,YE
  221. 12030  IF MO >2  THEN  GOSUB 120: GOTO 12050
  222. 12040  GOSUB 110
  223. 12050  RETURN 
  224. 13000 S = MO:X = DA
  225. 13010  READ COL$(0),COL$(1),COL$(2)
  226. 13020  IF S = 1  THEN 13050
  227. 13030 S = S -1: GOTO 13010
  228. 13050  RETURN 
  229. 14000  RESTORE : READ A,B,C:S = MO
  230. 14010  FOR I = 1 TO 36: READ X$: NEXT I
  231. 14020  READ DM: IF S = 1  THEN 14050
  232. 14030 S = S -1: GOTO 14020
  233. 14050  GOSUB 16000:DM = DM +LY: RETURN 
  234. 15000  IF X <DM  THEN 15050
  235. 15010 MO = MO +1: IF MO = 13  THEN MO = 1
  236. 15020  RESTORE : READ A,B,C
  237. 15030  GOSUB 13000: GOSUB 14000:X = 1
  238. 15050  RETURN 
  239. 16000 LY = 0:IN% = YE/4:I = YE/4
  240. 16005  IF MO < >2  THEN 16030
  241. 16010  IF IN% = I  THEN LY = 1
  242. 16020  IF LY = 1  AND  INT(YE/1000) = YE/1000  THEN LY = 0
  243. 16030  RETURN 
  244. 20000  RESTORE : IF FC = 1  THEN A = FD:B = FM:C = FY: GOTO 20010
  245. 20005  READ A,B,C
  246. 20010  RETURN 
  247. 32000 D$ = "<CTRL-D>"
  248. 32001  TEXT : CALL  -936
  249. 32010  PRINT D$;"RUN MENU"
  250. 32020  PRINT D$;"RUN MENU"
  251. 32030  END